/*
 * 练习题 2.76
 *
 * 假设我们有一个任务：生成一段代码，将整数变量 x 乘以不同的常数因子 K。为了提高
 * 效率，我们想只使用 +、- 和 << 运算。对于下列的 K 的值，写出执行乘法运算的C 表
 * 达式，每个表达式中最多使用 3 个运算。
 *
 * A. K=5
 * B. K=9
 * C. K=30
 * D. K=-56
 */

#include <stdio.h>

int main(void)
{
        int x = 6;              /* 一个完美的数字 */
        int t;

        /* A. K=5: (1<<2) + 1 */
        t = (x << 2) + x;
        printf("%d * %d = %d\n", x, 5, t);

        /* B. K=9: (1<<3) + 1 */
        t = (x << 3) + x;
        printf("%d * %d = %d\n", x, 9, t);

        /* C. K=30: (1<<5) - (1<<1) */
        t = (x << 5) - (x << 1);
        printf("%d * %d = %d\n", x, 30, t);

        /* D. K=-56: (1<<3) - (1<<6) */
        t = (x << 3) - (x << 6);
        printf("%d * %d = %d\n", x, -56, t);

        return 0;
}
